package thinkinjava4.ch18_io;

import java.io.File;

public class MakeDirectories {
    private static void usage() {
        System.err.println("Usage:MakeDirectories path1 ...\n" +
                "Creates each path\n" +
                "Usage:MakeDirectories -d path1 ...\n" +
                "Deletes each path\n" +
                "Usage:MakeDirectories -r path1 path2\n" +
                "Renames form path1 to path2");
        System.exit(1);
    }

    private static void fileData(File f) {
        System.out.println("Absolute path: " + f.getAbsolutePath() +
                "\n  Can read: " + f.canRead() +
                "\n  Can write: " + f.canWrite() +
                "\n  getName: " + f.getName() +
                "\n  getParent: " + f.getParent() +
                "\n  getPath: " + f.getPath() +
                "\n  length: " + f.length() +
                "\n  lastModified: " + f.lastModified());
        if (f.isFile()) {
            System.out.println("It's a file");
        } else if (f.isDirectory()) {
            System.out.println("It's a directory");
        } else {
            System.out.println("It isn't a file or a directory");
        }
    }

    public static void main(String[] args) {
        if (args.length < 1) usage();
//        -r
//        src/thinkinjava4/ch18_io/file1.txt
//        src/thinkinjava4/ch18_io/file2.txt
        if (args[0].equals("-r")) {
            if (args.length != 3) usage();
            File old = new File(args[1]);
            File rname = new File(args[2]);
            old.renameTo(rname);//重命名
            fileData(old);
            fileData(rname);
            return;
        }
//        MakeDirectories
//        src/thinkinjava4/ch18_io/dir1

//        -d
//        src/thinkinjava4/ch18_io/dir1
        int count = 0;
        boolean del = false;
        if (args[0].equals("-d")) {
            count++;
            del = true;
        }
        count--;
        while (++count < args.length) {
            File f = new File(args[count]);
            if (f.exists()) {
                System.out.println(f + " exists");
                if (del) {
                    System.out.println("deleting..." + f);
                    f.delete();
                }
            } else {
                if (!del) {
                    f.mkdirs();
                    System.out.println("created " + f);
                }
            }
            fileData(f);
        }
    }
}
